Online analytical processing (OLAP) is an approach that allows users to view multidimensional data from different points of view. Typical applications of OLAP include financial reporting, management reporting, budgeting and forecasting, business reporting, and marketing.
The core of any OLAP system is an OLAP cube, which is a data structure that allows data to be manipulated and analyzed from different perspectives. OLAP cubes contain values (e.g., numeric values) called measures that are categorized by dimensions. A dimension is typically a set of data attributes (e.g., customer, product, date). The purpose of the dimension is to categorize each item in a data set into non-overlapping regions. This provides the means to “slice and dice” cube data in many different ways. In some cases, each dimension has one or more attributes, and may have one or more hierarchies applied to it. An attribute is a descriptive element that may have one or more predefined values. For example, a dimension for “date” may have an attribute for “Month” with values including “January”, “February”, “March”, etc. A hierarchy is a series of parent-child relationships, where a parent member usually represents the consolidation of the members that are its children. For example, a dimension for “date” can have several alternative hierarchies such as “Day:Month:Year”, “Day:Week:Year”, “Day:Month:Quarter:Year”, etc.
FIG. 1 shows a high-level component diagram of a typical OLAP cube browsing system 100. The cube browsing system 100 includes a data retriever 120, a cube viewer 130, and an OLAP cube database 110. As shown, the cube browsing system 100 retrieves cube data from the cube database 110 and displays the retrieved data. Specifically, the cube viewer 130 sends a cube data request 150 to the data retriever 120. Based on the data request 150, the data retriever 120 queries the cube database 110 using a MultiDimensional eXpressions (MDX) query 140. In response to the query, the cube database 110 returns a MDX query result set 135. The data retriever 120 then sends the cube data 145 to the cube viewer 130 based on the MDX result set 135. Having received the cube data 145, the cube viewer 130 renders a cube view 160 on a display. These operations are repeated each time an end-user requests additional cube data.
There are several shortcomings with the system described above. For example, each time an end-user performs an action that requires a change to the displayed data, one or more queries will be performed against the cube database. It will request the cube database to provide the same data multiple times for the same end-user during the cube browsing experience, and require a complete re-rendering of the cube data each time a request is made. In a network environment, these frequent round trips to the multidimensional database server for large sets of data may add burden to the multidimensional database server and negatively affect the performance of the cube browsing system and the end-user experience.